package com.tf.mxj.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tf.mxj.R;
import com.tf.mxj.entity.Activity;
import com.tf.mxj.service.ActivityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 活动管理接口
 */
@RestController
@RequestMapping("/api/activity")
public class ActivityController {

    @Autowired
    private ActivityService activityService;

    /**
     * 查询所有活动（无分页）
     */
    @GetMapping
    public List<Activity> list() {
        return activityService.list();
    }

    /**
     * 新增活动
     * @param activity 活动实体
     * @return 是否成功
     */
    @PostMapping
    public R add(@RequestBody Activity activity) {
        boolean ok = activityService.save(activity);
        return ok ? R.ok() : R.error();
    }

    /**
     * 删除活动
     * @param id 活动ID
     * @return 是否成功
     */
    @DeleteMapping("/{id}")
    public R delete(@PathVariable Long id) {
        boolean ok = activityService.removeById(id);
        return ok ? R.ok() : R.error();
    }

    /**
     * 查询单个活动
     * @param id 活动ID
     * @return 活动详情
     */
    @GetMapping("/{id}")
    public Activity detail(@PathVariable Long id) {
        return activityService.getById(id);
    }

    /**
     * 修改活动
     * @param id 活动ID
     * @param activity 活动实体
     * @return 是否成功
     */
    @PutMapping("/{id}")
    public R update(@PathVariable Long id, @RequestBody Activity activity) {
        activity.setId(id);
        boolean ok = activityService.updateById(activity);
        return ok ? R.ok() : R.error();
    }

    /**
     * 分页+模糊搜索活动列表
     * @param page 当前页码（默认1）
     * @param limit 每页条数（默认10）
     * @param keyword 模糊搜索关键词（可选，按名称模糊查询）
     * @return total 总记录数、records 当前页数据
     */
    @GetMapping("/page")
    public R page(
            @RequestParam(defaultValue = "1") Integer page,
            @RequestParam(defaultValue = "10") Integer limit,
            @RequestParam(required = false) String keyword
    ) {
        // 分页对象
        Page<Activity> pageObj = new Page<>(page, limit);
        // 查询条件构造器
        LambdaQueryWrapper<Activity> wrapper = new LambdaQueryWrapper<>();
        if (keyword != null && !keyword.trim().isEmpty()) {
            wrapper.like(Activity::getName, keyword);
            // 如需多字段模糊，可加or
            // wrapper.like(Activity::getName, keyword)
            //        .or().like(Activity::getDesc, keyword);
        }
        // 执行分页查询
        activityService.page(pageObj, wrapper);
        // 返回总数和当前页数据
        return R.ok().data("records", pageObj.getRecords());
    }
}
